package com.the_ring.chapter08;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.os.Bundle;


import androidx.appcompat.app.AppCompatActivity;


public class NotifySimpleActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_notify_simple);
    }

    // 发送简单的通知消息（包括消息标题和消息内容）
    private void sendSimpleNotify(String title, String message) {
        // 发送消息之前要先创建通知渠道
        // 创建一个跳转到活动页面的意图
        Intent clickIntent = new Intent(this, MainActivity.class);
        // 创建一个用于页面跳转的延迟意图
        PendingIntent contentIntent = PendingIntent.getActivity(this, R.string.app_name, clickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        // 创建一个通知消息的建造器
        Notification.Builder builder = new Notification.Builder(this);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            // 从 Android 8.0 开始必须给每个通知分配对应的渠道
            builder = new Notification.Builder(this, getString(R.string.app_name));
        }
        builder.setContentIntent(contentIntent)             // 设置内容的点击意图
                .setAutoCancel(true)                        // 点击通知栏后是否自动消除该通知
                .setSmallIcon(R.mipmap.ic_launcher)         // 设置应用名称左边的小图标
                .setSubText("这里是副本")                    // 设置通知栏里面的附加文本
                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher_foreground))          // 设置通知栏右边的大图标
                .setContentTitle(title)                         // 设置通知栏里面的标题文本
                .setContentText(message);                       // 设置通知栏里面的内容文本
        Notification notify = builder.build();                  // 根据通知建造器构建一个通知对象
        // 新系统服务中获取通知管理器
        NotificationManager notifyMgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        // 使用通知管理器推送通知，然后再手机的童虎栏就会看到该消息
        notifyMgr.notify(R.string.app_name, notify);
    }

    // 发送计时的通知消息
    private void sendCounterNotify(String title, String message) {
        // 发送消息之前要先创建通知渠道
        // 创建一个跳转到活动页面的意图
        Intent clickIntent = new Intent(this, MainActivity.class);
        // 创建一个用于页面跳转的延迟意图
        PendingIntent contentIntent = PendingIntent.getActivity(this, R.string.app_name, clickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        // 创建一个通知消息的建造器
        Notification.Builder builder = new Notification.Builder(this);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            // 从 Android 8.0 开始必须给每个通知分配对应的渠道
            builder = new Notification.Builder(this, getString(R.string.app_name));
        }
        builder.setContentIntent(contentIntent)             // 设置内容的点击意图
                .setSmallIcon(R.mipmap.ic_launcher)         // 设置应用名称左边的小图标
                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher_foreground))          // 设置通知栏右边的大图标
                .setProgress(100, 60, false)    // 设置进度条及其具体进度
                .setUsesChronometer(true)                       // 设置是否显示计时器
                .setContentTitle(title)                         // 设置通知栏里面的标题文本
                .setContentText(message);                       // 设置通知栏里面的内容文本
        Notification notify = builder.build();                  // 根据通知建造器构建一个通知对象
        // 新系统服务中获取通知管理器
        NotificationManager notifyMgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        // 使用通知管理器推送通知，然后再手机的童虎栏就会看到该消息
        notifyMgr.notify(R.string.app_name, notify);
    }
}